package br.ufpi.hu.prescricao.facade.impl;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.ufpi.hu.prescricao.dao.UserDAO;
//import br.ufpi.hu.prescricao.facade.AghuFacade;
import br.ufpi.hu.prescricao.facade.UserFacade;
import br.ufpi.hu.prescricao.model.Usuario;
import br.ufpi.hu.prescricao.model.vo.UsuarioVO;

@Stateless
public class UserFacadeImpl implements UserFacade {

	@EJB 
	private UserDAO userDAO;
	
//	@EJB
//	private AghuFacade aghuFacade;
	
	private Usuario usuarioAtual;
	
	public void criar(Usuario entity) {
		userDAO.save(entity);
	}
	
	public Usuario findUserByLogin(String login) {
		return userDAO.findUserByLogin(login);
	}
	
	public void setUsuarioAtual(Usuario usuario) {
		this.usuarioAtual = usuario;
	}

	public Usuario getUsuarioAtual() {
		return usuarioAtual;
	}
	
	public boolean isUsuarioAtualAdmin() {
		if (usuarioAtual!=null) {
			return usuarioAtual.temRole("SUPER") || usuarioAtual.temRole("ADMIN_FORMULARIOS");
		}
		return false;
	}
	
	/* (non-Javadoc)
	 * @see br.ufpi.hu.prescricao.facade.UserFacade#isUsuarioAtualSuper()
	 */
	public boolean isUsuarioAtualSuper() {
		if (usuarioAtual!=null) {
			return usuarioAtual.getRoles().contains("SUPER");
		}
		return false;
	}
	
	@Override
	public void update(Usuario usuario) {
		userDAO.update(usuario);
	}

	@Override
	public List<UsuarioVO> autocomplete(String param) {
//		return aghuFacade.autocompleteUsuario(param);
		return new ArrayList<UsuarioVO>();
	}
	
	/**
	 * Caso a aba aberta pela última vez seja alterada, é atualizada a preferência.
	 */
	public void alterarAbaFavorita(int index) {
		
//		if (getUsuarioAtual().getAbaHomeFavorita()!=index) {
//			getUsuarioAtual().setAbaHomeFavorita(index);
//			update(getUsuarioAtual());
//		}
		
	}
	
}